1. Technical Field of the Present Invention
The present invention generally relates to distributed computing and, more specifically, to methods, apparatuses, and computer program products that manage the execution of tasks on the resources of the distributed computing environment.
2. Description of Related Art
The evolution of using multiple computers to share and process information began the first time two computers were connected together and has continued through the birth of various forms of networks such as clustering and grid computing.
The framework of grid computing is large scale organization and sharing of resources (where the resources can exist in multiple management domains) to promote the use of highly parallelized applications that are connected together through a communications medium in order to simultaneously perform one or more job requests. The characteristics of each resource can include, for example, processing speed, storage capability, licensing rights, and types of applications available.
The use of grid computing to handle all types of tasks has several distinct advantages. One such advantage is that it efficiently uses the grouped resources so that under-utilization is minimized. For example, assume that a vendor suddenly encounters a 75% increase in traffic for orders being placed as a result of a blockbuster product. If a traditional system were used in this example, the customer would experience latent response and completion time, bottleneck in processing, and the system could even overload its resources due to its limited or fixed computational and communication resources.
Presented with the same situation, grid computing can dynamically adjust to meet the changing business needs, and respond instantly to the increase in traffic using its network of available resources. More specifically, as the traffic increased, the instantiations of the applications responsible for receiving and processing the orders could be executed on under-utilized resources so that the customer would not experience any latency as a result of the increase in traffic.
Another advantage is that grid computing provides the ability to share resources such as hardware, software, and services, as virtual resources. These virtual resources provide uniform interoperability between heterogeneous grid participants. Each grid resource may have certain features, functionalities and limitations. For example, a particular job may require an SQL server as compared to Oracle server. So, the grid computing architecture selects or creates a resource that is capable of supporting this particular requirement.
The ability to efficiently use the resources of the grid computing architecture is a primary concern. In fact, the sharing of the resources of the grid is built upon this very principal. Unfortunately, current applications that are created for grid computing are designed so as to expect that all of their modules will be required for execution in order to accomplish an intended task or purpose. The reality is that some of the functionality of these applications is not required in order to achieve the underlying purpose or task. As the resources of the grid environment become constrained or otherwise restricted, the 100 percent execution requirement of these applications becomes a limiting factor in the number of applications running and the times associated with providing the end results.
It would, therefore, be a distinct advantage if an application could be designed so as to identify those modules or portions that are required to achieve an underlying task (“critical”) and those modules whose execution is optional (“non-critical”). It would be further advantageous if the software and/or hardware managing the resources of the grid had knowledge concerning the critical and non-critical modules for each of the applications executing on the grid. When resources of the grid become constrained or otherwise unavailable, the hardware/software can make intelligent decisions concerning whether existing or new applications can operate in a degraded state (i.e., only critical modules are executed).